<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>

    <script>
        // ES6允许使用箭头来定义函数 (=>)
        // 声明函数
        // 原先写法
        // let fn = function () {

        // }
        // ES6写法
        this.a = 3
        let fn = (a, b) => {
            // 箭头函数的this是静态的，始终指向的是函数声明的时的作用域下的this
            console.log(this.a);//3 而不是1
            console.log(a);//1 参数

            return (a + b).toFixed(2);//Number.toFixed(2) 保留两位小数
        }

        // 调用函数
        let result = fn(1, 2);
        console.log(result);
        // 1.箭头函数的 this是静态的 this始终指向函数声明时候所在的作用域下的this的值

        // 2.箭头函数不能作为构造函数实例化对象
        // let Person = (name, age) => {
        //     this.name = name;
        //     this.age = age;
        // }
        // let me = new Person("me", 20)
        // console.log(me);

        // 3.不能使用arguments变量
        // let fn2 = () => {
        //     console.log(arguments);
        // }
        // fn2();

        // 4.箭头函数再简写
        // 1.省略小括号 当参数有且仅有一个的时候
        // let add = (a) => {
        //     return a + a;
        // }
        // console.log(add(9));
        let add = a => {
            return a + a;
        }
        console.log(add(9));
        // 2.省略花括号 当代码体只有一条语句的时候 都不要return了
        let pow = a => Math.pow(a, 2);
        console.log(pow(9));


    </script>

</body>

</html>